const cron = require('node-cron')
const AdService = require('../services/adService')
const logger = require('../utils/logger')

/**
 * 广告记录清理定时任务
 * 每天凌晨2点执行，清理90天前的广告观看记录
 */
class AdCleanupJob {
  static start() {
    // 每天凌晨2点执行
    cron.schedule('0 2 * * *', async () => {
      try {
        logger.info('开始执行广告记录清理任务')
        
        const deletedCount = await AdService.cleanupOldAdViews(90)
        
        logger.info(`广告记录清理任务完成，清理了 ${deletedCount} 条记录`)
      } catch (error) {
        logger.error('广告记录清理任务失败:', error)
      }
    }, {
      timezone: 'Asia/Shanghai'
    })
    
    logger.info('广告记录清理定时任务已启动')
  }
  
  /**
   * 手动执行清理任务
   * @param {number} daysToKeep - 保留天数
   * @returns {number} 清理的记录数
   */
  static async runManually(daysToKeep = 90) {
    try {
      logger.info(`手动执行广告记录清理任务，保留 ${daysToKeep} 天`)
      
      const deletedCount = await AdService.cleanupOldAdViews(daysToKeep)
      
      logger.info(`手动清理任务完成，清理了 ${deletedCount} 条记录`)
      return deletedCount
    } catch (error) {
      logger.error('手动清理任务失败:', error)
      throw error
    }
  }
}

module.exports = AdCleanupJob